<?php
namespace Admin\Model;

class HelpTypeModel extends CommonModel{
    //获取某个分类的子分类
    protected $_validate = array(
        array('title','','名称重复',1,'unique')
    );
    public function getChildren($id){
        //获取所有的分类信息
        $data=$this->select();
        //dump($id);die;
        //对获取的信息进去格式化
        $list=$this->getTree($data,$id,1,false);//为false，查询单一数据,清除缓存
        //dump($list);die;
        //获取输入父级分类ID下所有的子分类id
        foreach ($list as $key=>$value){
            $tree[]=$value['id'];
        }
        return $tree;
    }
    //获得格式化的数信息
    public function getCateTree($id=0){
        $data=$this->select();
        //dump($data);die;
        //对获取的信息进行格式化
        $list =$this-> getTree($data,$id);
        //dump($list);die;
        return $list;
    }

    //格式化分类信息  无限极分类
    public function getTree($data,$id=0,$lev=1,$iscache=true){//为true查询所有数据
        static $list = array();
        //根据参数决定是否需要重置
        if(!$iscache){
            $list=array();
        }
        foreach($data as $key=>$value){
            if($value['pid']==$id){
                $value['lev'] = $lev;
                $list[]=$value;
                //使用递归方法获取分类下的子分类
                $this->getTree($data,$value['id'],$lev+1);
            }
        }
        return $list;
        //dump($list);die;
    }

    //删除分类
    public function dels($id){
        //如果删除的分类下有子类不允许删除
        $result = $this->where('pid='.$id)->find();
        if($result){
            return false;
        }
        return $this->where('id='.$id)->delete();
    }

    //修改
    public function update($data){
        $tree = $this->getCateTree($data['id']);
        $tree[]=array('id'=>$data['id']);
        //如果提交的parent_id值等于自己及子分类的某个ID直接不允许修改
        foreach ($tree as $key=>$value){
            if($data['pid']==$value['id']){
                $this->error='不能设置子分类为父分类';
                return false;
            }
        }
        return $this->save($data);
    }

}